package com.zensun.system.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zensun.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;

/**
 * 角色表 sys_role
 *
 * @author gmk
 */
@ApiModel("角色表")
@Data
@TableName("sys_role")
public class SysRole extends BaseEntity<SysRole> {
    private static final long serialVersionUID = 1L;

    /**
     * 角色ID
     */
    @ApiModelProperty("角色编号")
    @TableId
    @Null(message = "角色ID必须为空", groups = AddGrop.class)
    @NotNull(message = "角色ID不能为空", groups = UpdateGrop.class)
    private Long roleId;


    /**
     * 部门Id
     */
    @ApiModelProperty(value = "部门Id", hidden = true)
    private Long deptId;

    /**
     * 角色名称
     */
    @ApiModelProperty("角色名称")
    @NotBlank(message = "角色名称不能为空", groups = {AddGrop.class, UpdateGrop.class})
    private String roleName;

    /**
     * 角色权限
     */
    @ApiModelProperty("权限字符")
    @NotBlank(message = "权限字符不能为空", groups = {AddGrop.class, UpdateGrop.class})
    private String roleKey;

    /**
     * 角色排序
     */
    @ApiModelProperty(value = "显示顺序", hidden = true)
    private Integer roleSort;

    /**
     * 数据范围（1：所有数据权限；2：自定义数据权限；3：本部门数据权限；4：本部门及以下数据权限）
     */
    @ApiModelProperty(value = "权限范围", hidden = true)
    private String dataScope;

    /**
     * 菜单树选择项是否关联显示（ 0：父子不互相关联显示 1：父子互相关联显示）
     */
    @ApiModelProperty(value = "菜单树选择项是否关联显示（ 0：父子不互相关联显示 1：父子互相关联显示）", hidden = true)
    private boolean menuCheckStrictly;

    /**
     * 部门树选择项是否关联显示（0：父子不互相关联显示 1：父子互相关联显示 ）
     */
    @ApiModelProperty(value = "部门树选择项是否关联显示（0：父子不互相关联显示 1：父子互相关联显示 ）", hidden = true)
    private boolean deptCheckStrictly;

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @ApiModelProperty(value = "删除标志（0代表存在 1代表删除）", hidden = true)
    private Integer isDelete;

    /**
     * 用户是否存在此角色标识 默认不存在
     */
    @ApiModelProperty(value = "用户是否存在此角色标识 默认不存在", hidden = true)
    @TableField(exist = false)
    private boolean flag = false;

}
